This invention relates to data packet transmission.
Each data packet transmitted in digital loop carrier transmission systems normally includes a cyclic redundancy check (CRC) code at the end of the packet to permit checking for any data errors during transmission. In some systems, such as those employing front end statistical multiplexing where a plurality of end users share the same bandwidth, it is required that the remote terminal (RT) which receives a packet from the end user add a header to the packet before re-transmitting it to the central office or substract a header when receiving a packet from the central office before re-transmitting it to the end user. When the packet comes in, the RT will inspect the check code and, assuming it is valid, discard the check code. After a header is added or substracted from the packet, the RT will then calculate a new check code to take into account the change in the header field before re-transmitting the packet.
A problem with present systems is that the data is vulnerable in the time between the inspection of the old check code and the addition of the new check code. That is, the new check code will not permit detection of any changes in the data during the time that the packet is without a check code since the calculation is based on the data on hand rather than the data originally received by the RT.
A proposal has been made to modify the received check code when one header is substituted for another based on the difference between the two headers. (See U.S. patent application of S. Dravida, Ser. No. 07/584,211, filed Sep. 18, 1990, assigned to the present assignee and incorporated by reference herein.) While that approach is generally useful, it cannot be easily employed when the packet length is variable and a seed which is not equal to zero is required for the CRC calculation.